package com.example.mysql.学习笔记.MYSQL8.窗口函数;

public class 新增窗口函数 {
}
/**
 *窗口函数分类
 *
 * MySQL从8.0版本开始支持窗口函数。
 *      窗口函数的作用类似于在查询中对数据进行分组，
 *      不同的是，分组操作会把分组的结果"聚合成一条记录"，
 *      而窗口函数是"将结果置于每一条数据记录中"。
 *
 * 窗口函数可以分为`静态窗口函数`和`动态窗口函数`。
 *
 * - 静态窗口函数的窗口大小是固定的，不会因为记录的不同而不同；
 * - 动态窗口函数的窗口大小会随着记录的不同而变化。
 *
 *
 * 窗口函数总体上可以分为序号函数、分布函数、前后函数、首尾函数和其他函数，
 *
 * 语法结构
 * 窗口函数的语法结构是：
 *
 * 函数 OVER（[PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC]）
 *
 * 或者是：
 *
 * 函数 OVER 窗口名 … WINDOW 窗口名 AS （[PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC]）
 *
 * FROM 表名 WHERE 1=1 WINDOW 窗口名 AS （[PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC]）
 * WHERE可省略
 *
 * - OVER 关键字指定函数窗口的范围。
 *   - 如果省略后面括号中的内容，则窗口会包含满足WHERE条件的所有记录，
 *      窗口函数会基于所有满足WHERE条件的记录进行计算。
 *   - 如果OVER关键字后面的括号不为空，则可以使用如下语法设置窗口。
 * - 窗口名：为窗口设置一个别名，用来标识窗口。
 * - PARTITION BY子句：指定窗口函数按照哪些字段进行分组。
 *      分组后，窗口函数可以在每个分组中分别执行。
 * - ORDER BY子句：指定窗口函数按照哪些字段进行排序。
 *      执行排序操作使窗口函数按照排序后的数据记录的顺序进行编号。
 * - FRAME子句：为分区中的某个子集定义规则，可以用来作为滑动窗口使用。
 */

/**
 * ### 2.5 小 结
 *
 * 窗口函数的特点是可以分组，而且可以在分组内排序。
 * 另外，窗口函数不会因为分组而减少原表中的行数，
 * 这对我们在原表数据的基础上进行统计和排序非常有用。
 */
